সি# এ try
, catch
, এবং finally
ব্লক ব্যবহার করে এক্সেপশন হ্যান্ডলিং প্রক্রিয়াটি আরও বিশদে বুঝিয়ে দেওয়া হলো। এটি প্রোগ্রাম চালানোর সময় যেকোনো ত্রুটি বা অপ্রত্যাশিত ঘটনার সাথে সঠিকভাবে মোকাবিলা করতে সাহায্য করে। এই ব্লকগুলো ব্যবহারের মাধ্যমে প্রোগ্রামের ক্র্যাশ হওয়া থেকে রক্ষা পেতে পারি এবং ব্যবহারকারীদের স্পষ্ট ও সহায়ক বার্তা দেখাতে পারি।
try
ব্লকtry
ব্লক এমন কোড ধারণ করে যেটি এক্সেপশন ঘটাতে পারে। আপনি যেকোনো ধরনের সন্দেহজনক কোড try
ব্লকের মধ্যে রাখেন, যাতে সেই কোড থেকে এক্সেপশন ঘটলে এটি catch
ব্লকে নিয়ে যায়। যদি try
ব্লকের কোড কোনো এক্সেপশন তৈরি না করে, তাহলে catch
ব্লক এড়িয়ে যায় এবং সরাসরি finally
ব্লকে চলে যায়।
উদাহরণস্বরূপ:
try
{
int number = 10;
int result = number / 0; // এখানে Division by zero exception ঘটবে
}
উপরের উদাহরণে, try
ব্লকের কোডে একটি সংখ্যা শূন্য দিয়ে ভাগ করার চেষ্টা করা হয়েছে, যা একটি DivideByZeroException
সৃষ্টি করে।
catch
ব্লকcatch
ব্লক ত্রুটি হ্যান্ডল করে এবং এটি এক বা একাধিক catch
ব্লক ব্যবহার করে নির্দিষ্ট এক্সেপশন ধরতে পারে। প্রতিটি catch
ব্লক নির্দিষ্ট ধরনের এক্সেপশন ধরার জন্য ব্যবহার করা হয়। নির্দিষ্ট প্রকারের এক্সেপশন আগে এবং সাধারণ (Generic) এক্সেপশন পরে রাখতে হয়, কারণ সি# প্রথম পাওয়া catch
ব্লকেই চলে যাবে।
try
{
int[] numbers = { 1, 2, 3 };
Console.WriteLine(numbers[5]); // Array index out of bounds exception
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine("Error: Array index is out of bounds. " + ex.Message);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Error: Division by zero occurred. " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("An unexpected error occurred: " + ex.Message);
}
catch
ব্লক IndexOutOfRangeException
ধরার জন্য। এটি অ্যারে ইনডেক্স আউট অফ বাউন্ড এক্সেপশন হ্যান্ডল করে।catch
ব্লকটি DivideByZeroException
ধরার জন্য।catch
ব্লকটি জেনেরিক Exception
ধরার জন্য, যা অন্যান্য যেকোনো এক্সেপশন ধরতে সক্ষম।প্রতিটি catch
ব্লক:
ex.Message
এক্সেপশনের বিশদ বার্তা প্রদান করে।catch
ব্লকে লগ ফাইল বা ডাটাবেজে ত্রুটি বার্তা সংরক্ষণ করতে পারেন।finally
ব্লকfinally
ব্লক try
এবং catch
ব্লকের পর সর্বদা চালানো হয়, এক্সেপশন ঘটুক বা না ঘটুক। সাধারণত, এটি রিসোর্স রিলিজ (যেমন, ডেটাবেস কানেকশন বা ফাইল হ্যান্ডেল) নিশ্চিত করার জন্য ব্যবহৃত হয়। এটি খুবই গুরুত্বপূর্ণ, কারণ এর মাধ্যমে কোডের নির্ভরযোগ্যতা এবং স্থিতিশীলতা বজায় রাখা সম্ভব হয়।
try
{
// এখানে কিছু কোড লেখা হবে
}
catch (Exception ex)
{
Console.WriteLine("An error occurred: " + ex.Message);
}
finally
{
Console.WriteLine("The 'finally' block is always executed.");
}
এখানে finally
ব্লক সব সময় চালানো হবে। উদাহরণস্বরূপ, ডেটাবেস কানেকশন বন্ধ করা বা ফাইল বন্ধ করা নিশ্চিত করতে পারেন যাতে তা লিক না হয়।
throw
কিওয়ার্ডthrow
কিওয়ার্ড দিয়ে একটি নির্দিষ্ট এক্সেপশন তৈরি বা কাস্টম এক্সেপশন ছাড়ার কাজ করা যায়। এটি এমন কোনো পরিস্থিতিতে ব্যবহার করা হয় যেখানে আপনার নিজের কাস্টম এক্সেপশন ছাড়ার প্রয়োজন হয়।
public void ValidateAge(int age)
{
if (age < 18)
{
throw new ArgumentException("Age must be 18 or older.");
}
}
এখানে, ValidateAge
মেথডে যদি age
১৮ এর কম হয়, তাহলে এটি ArgumentException
ছাড়বে। এই ধরনের কাস্টম এক্সেপশন তৈরি করার মাধ্যমে আপনি আপনার প্রোগ্রামের জন্য নির্দিষ্ট চেকিং এবং নিয়ন্ত্রণ তৈরি করতে পারেন।
using System;
public class Program
{
public static void Main()
{
try
{
Console.WriteLine("Enter a number:");
int number = int.Parse(Console.ReadLine());
if (number < 0)
{
throw new ArgumentOutOfRangeException("Number cannot be negative.");
}
Console.WriteLine("Result: " + (100 / number));
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Error: Division by zero is not allowed. " + ex.Message);
}
catch (ArgumentOutOfRangeException ex)
{
Console.WriteLine("Error: " + ex.Message);
}
catch (FormatException ex)
{
Console.WriteLine("Error: Input is not a valid number. " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("An unexpected error occurred: " + ex.Message);
}
finally
{
Console.WriteLine("Thank you for using the program!");
}
}
}
DivideByZeroException
ঘটবে এবং catch
ব্লক হ্যান্ডল করবে।ArgumentOutOfRangeException
থ্রো হবে এবং catch
ব্লকে হ্যান্ডল হবে।FormatException
ধরা হবে।finally
ব্লক সব সময় "Thank you for using the program!" দেখাবে, ত্রুটি ঘটুক বা না ঘটুক।try
: যেখানে এক্সেপশন ঘটতে পারে এমন কোড রাখা হয়।catch
: নির্দিষ্ট এবং সাধারণ এক্সেপশন হ্যান্ডল করতে ব্যবহৃত হয়।finally
: সবশেষে চালানো হয়, এক্সেপশন ঘটুক বা না ঘটুক।throw
: কাস্টম বা নির্দিষ্ট এক্সেপশন তৈরি করতে ব্যবহৃত হয়।এভাবে try
, catch
, এবং finally
ব্লক ব্যবহার করে সি# প্রোগ্রামে ত্রুটি হ্যান্ডলিং করতে পারি, যা কোডের স্থিতিশীলতা ও নির্ভরযোগ্যতা বৃদ্ধি করে।
আরও দেখুন...